Matlab模拟电偶极子场强分布

您所在的位置:网站首页 电偶极子 电场 Matlab模拟电偶极子场强分布

Matlab模拟电偶极子场强分布

2023-11-27 17:45| 来源: 网络整理| 查看: 265

项目场景: 本文主要利用matlab 编程计算电偶极子电势和电场强度的大小和方向,并绘制图像进行可视化,最后介绍matlab梯度函数的运算原理。 电偶极子电场线与电势分布: A.二维平面图(一) 绘制电势分布用到contour()函数;求解梯度用到gradient()函数绘制电场线用到streamline()函数; clear q=1; xm=2.5; ym=2; x=linspace(-xm,xm); y=linspace(-ym,ym); [X,Y]=meshgrid(x,y); r1=sqrt((X+1).^2+Y.^2); r2=sqrt((X-1).^2+Y.^2); %构造电势表达式 Phi=-q./r1+q./r2; u=-4:0.5:4; figure %此处运用contour()函数绘制等高线,'--'代表绘制虚线,默认为实线 contour(X,Y,Phi,u,'--'); %此处运用contourf()函数绘制等高面,可以取消注释查看 %contourf(X,Y,Phi,u); hold on %此处用于标记正负电荷 plot(-1,0,'o', 'MarkerSize',12); plot(1,0,'o', 'MarkerSize',12); text(-1.02,0,'-','FontSize',10); text(0.98,0,'+','FontSize',10); %此处运用梯度函数进行求解场强EX,EY分量,并指定间距,起到放大同样倍数的效果 [EX1,EY1]=gradient(-Phi,x(1),y(1)); %此处构造stratline函数的起点 dth1=20; th1=(dth1:dth1:180-dth1)*pi/180; r0=0.1; %构造左侧电场线起点x1,y1 x1=r0*cos(th1)-1; y1=r0*sin(th1); %此处运用streamline函数进行电场线绘制 streamline(X,Y,EX1,EY1,x1,y1); streamline(X,-Y,EX1,-EY1,x1,-y1); hold on %以下代码可以类比上面代码 [EX2,EY2]=gradient(-Phi,x(100),y(100)); dth2=20; th2=(180-dth2:-dth2:dth2)*pi/180; x2=r0*cos(th2)+1; y2=r0*sin(th2); streamline(X,Y,EX2,EY2,x2,y2); streamline(X,-Y,EX2,-EY2,x2,-y2); axis equal tight title('电偶极子场强和电势分布图') xlabel('\itx'); ylabel('\ity');

在这里插入图片描述

B.二维平面图(二) 绘制电场线分布用到streamline()函数; clear [X,Y] = meshgrid(-4:0.02:4); R1=sqrt((X+1).^2+Y.^2); R2=sqrt((X-1).^2+Y.^2); Phi = 1./R1+1./R2; [EX,EY]=gradient(-Phi); hold on; R0=0.1; th = 20:20:360 - 20; th = th*pi/180; xm = -1+R0*cos(th); ym = R0*sin(th); h = streamline(X,Y,EX,EY,xm,ym); xn = -xm; yn = ym; h = streamline(X,Y,EX,EY,xn,yn); axis image

在这里插入图片描述

C.二维等势面 绘制电场线分布用到contourf()函数; clear a=2; [X,Y]=meshgrid(linspace(-5,5,500)); R1=sqrt((X-a).^2+Y.^2); R2=sqrt((X+a).^2+Y.^2); Phi=1./R1-1./R2; s=linspace(-0.8,0.8,13); [c,h]=contourf(X,Y,Phi,s); clabel(c,h); colormap parula axis equal

在这里插入图片描述

D.三维空间图 绘制电势分布的三维图用到mesh()函数; clear q=1; xm=2.5; ym=2; x=linspace(-xm,xm); y=linspace(-ym,ym); [X,Y]=meshgrid(x,y); r1=sqrt((X+1).^2+Y.^2); r2=sqrt((X-1).^2+Y.^2); Phi=-q./r1+q./r2; %此处运用mesh函数绘制Phi,X,Y三维图,其实是二维图的三维形式 mesh(X,Y,Phi) hold on xlabel('\itx'); ylabel('\ity'); zlabel('\itz');

在这里插入图片描述

A.梯度函数gradient():

梯度函数gradient具体解释gradient(F)返回F(一维标量)的差分计算结果,默认间距为1gradient(F,h)返回F(一维标量)的差分计算结果,指定间距为hgradient(F,hx,hy,…,hN)返回F(n维矢量)的差分计算结果,指定间距为hx,hy,…,hN 算法原理

gradient(F)计算F(考虑F为二维矩阵(M,N))的梯度分为两部分

第一部分:二维矩阵的第一列和最后一列(单侧差分) 计算公式为:G(:,1) = F(:,2) - F(:,1);G(:,N) = F(:,N) - F(:,N-1); 即为第二列的数值-第一列的数值;最后一列的数值-倒数第二列的数值

第二部分:二维矩阵的中间所有列(中心差分) 计算公式为:G(:,j)=1/2*(F(:,j+1) - F(:,j-1)), 即为第j列的梯度=1/2*[第(j+1)列的数值-第(j-1)列的数值

代码如下(示例):

a = 1 5 9 2 5 8 3 5 1 [dx,dy]=gradient(a) dx = 4 4 4 3 3 3 2 -1 -4 dy = 1 0 -1 1 0 -4 1 0 -7


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3